1. Technical Field
The present invention relates to technology which, in information processing system having a plurality of virtual CPUs, allocates the virtual CPUs to a plurality of physical CPUs.
2. Background Art
Technology exists for running a plurality of virtual machines on one physical machine. A virtual machine operates on a virtual Central Processing Unit (CPU), and virtual CPUs are allocated to physical CPUs by time sharing. Technology for virtual machines provides a management module for managing time sharing of physical CPUs by virtual CPUs. Such a management module is hereinafter referred to as a hypervisor.
Conventionally, an Operating System (OS) using a plurality of CPUs has, for each CPU, a task queue listing tasks. Each CPU executes the tasks listed in the task queue for that CPU. In order to utilize CPU resources efficiently, it is preferable to balance the load between CPUs. Technology has thus been developed for an OS to calculate the load on each CPU, based on factors such as the number of tasks listed in the task queue and the priority of the tasks, and balance the load by dividing up tasks. Specifically, when a new task is generated, the OS may for example list the task in the task queue for the CPU with the smallest load. Another method for dividing the load is for the OS to calculate the load on each CPU at regular intervals and moves tasks between CPUs to balance the load.
The hypervisor that schedules the virtual CPUs determines the order of execution of the virtual CPUs. Patent Literature 1 discloses technology for a virtual machine to notify the hypervisor of the priority of the next task to be executed when switching between tasks and for the hypervisor to determine which virtual machine will execute a task next based on the priority. With this technology, processing by a virtual machine executing a task with a high priority, such as a task that needs to be executed in real time (hereinafter, a “real-time task” (RT task)), is executed first, thus more easily satisfying the demands of real-time processing.